// pages/recoveryDetails/recoveryDetails.js
// 引入api接口
const { getRecoveryList } = require("../../utils/api")
Page({
	/**
	 * 页面的初始数据
	 */
	data: {
		/** 治疗方式 */
		recovery: [{
				id: 1,
				name: '传统理疗',
				price: [{
						id: 1,
						number: 100
					},
					{
						id: 2,
						number: 200,
					},
					{
						id: 3,
						number: 300
					}
				],
				checked: null, //是否被选中
				checkedPrice: null //若被选中，则选中的价格为
			},
			{
				id: 2,
				name: '康复治疗',
				price: [{
						id: 4,
						number: 100
					},
					{
						id: 5,
						number: 200,
					},
					{
						id: 6,
						number: 300
					}
				],
				checked: null, // 是否被选中
				checkedPrice: null // 若被选中，则选中的价格为
			}
		],

		// 康复师信息
		workerId: null,
		workerName: null

	},

	// 改变选项
	selected(e) {
		// 1.确定组别
		console.log('组别id：' + e.currentTarget.dataset.group);
		// 2.确定价格
		console.log('价格id：' + e.detail.value);
		// 3.遍历对象数组，取出指定对象
		for (let item = 0; item < this.data.recovery.length; item++) {
			if (this.data.recovery[item].id == e.currentTarget.dataset.group) {
				// 字符串拼接
				/** 字符串中无法直接调用不确定的值，必须使用字符串拼接方法拼起来 */
				const group = 'recovery[' + item + '].checked'
				const checkedPrice = group + 'Price'

				/** 4.判断是选中还是取消选中
				 *  如果是取消选中，就把checked改为false，checkedPrice改为null
				 *  如果是选中，则继续遍历，给checkedPrice赋值
				 */
				if (e.detail.value == null) {
					console.log('取消选中');
					this.setData({
						[group]: false,
						[checkedPrice]: null
					})
				} else {
					console.log('选中');
					/** 4.1 修改checked属性为true
					 *  4.2 遍历price数组，修改checkedPrice属性为价格值
					 */
					for (let index = 0; index < this.data.recovery[item].price.length; index++) {
						if (this.data.recovery[item].price[index].id == e.detail.value) {
							this.setData({
								[group]: true,
								[checkedPrice]: this.data.recovery[item].price[index].number
							})
						}
					}
				}
				console.log(this.data.recovery[item].checked);
				console.log(this.data.recovery[item].checkedPrice);
			}
		}
	},

	// 提交订单
	confirm() {
		var hospital = '' // 治疗方式
		var price = null // 总价格

		// 1.遍历recovery数组，必须选择至少一个选项，否则不让提交
		for (let item = 0; item < this.data.recovery.length; item++) {
			/** 只要有一个选项，就走提交流程 */
			if (this.data.recovery[item].checked == true) {
				// 2.把选中的治疗方式拼接成字符串
				hospital += "+" + this.data.recovery[item].name
				// 3.对price求和
				price += this.data.recovery[item].checkedPrice
			}
		}
		// 4.最后一个没有'+'，截取字符串，截掉最后一个字符
		if (hospital.length > 0) {
			hospital = hospital.substr(1, hospital.length)
		}
		console.log(hospital);
		console.log(price);
		// 5.判断有没有选项，没有就报错
		if (hospital == '' || price == null) {
			wx.showToast({
				title: '至少选择一项！',
				icon: 'error'
			})
		} else {
			const workerId = this.data.workerId
			const workerName = this.data.workerName
			// 6.带数据跳转订单提交页面
			wx.navigateTo({
			  url: '/pages/service/service?workerId=' + workerId + '&workerName=' + workerName + '&hospital=' + hospital + '&price=' + price,
			})
		}
	},

	/**
	 * 生命周期函数--监听页面加载
	 */
	onLoad(options) {
		console.log(options);
		// 获取康复治疗选项列表
		getRecoveryList().then((res) => {
			console.log(res.data);
			this.setData({
				workerId: options.workerId,
				workerName: options.workerName,
				recovery: res.data
			})
		})
	},

	/**
	 * 生命周期函数--监听页面初次渲染完成
	 */
	onReady() {

	},

	/**
	 * 生命周期函数--监听页面显示
	 */
	onShow() {

	},

	/**
	 * 生命周期函数--监听页面隐藏
	 */
	onHide() {

	},

	/**
	 * 生命周期函数--监听页面卸载
	 */
	onUnload() {

	},

	/**
	 * 页面相关事件处理函数--监听用户下拉动作
	 */
	onPullDownRefresh() {

	},

	/**
	 * 页面上拉触底事件的处理函数
	 */
	onReachBottom() {

	},

	/**
	 * 用户点击右上角分享
	 */
	onShareAppMessage() {

	}
})